// main.js版本：1.0.1
// 更新时间：2024年8月9日
// 更新内容：版本初始化

import { createApp } from 'vue'
import App from './App.vue'
const vue = createApp(App)

// 1.0 引入router
import router from './router/index'
// 1.1 引入ElementPlus消息提示
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'    // 样式
import 'element-plus/es/locale/lang/zh-cn'  // 引入中文样式
import locale from 'element-plus/es/locale/lang/zh-cn'  // 用于转换日期选择器的中文显示
import { ElMessage, ElLoading } from 'element-plus'     // 其他相关的功能模块
// 1.2 引入axios
import axios from 'axios'
axios.defaults.withCredentials = false // 解决前后端分离及缓存问题，必须有

/*
#######################################################################################
########                             第二项                              ##############
#######################################################################################
*/

// 服务器的地址
// const HTTP_URL = "http://192.168.20.21/"
const HTTP_URL = "http://192.168.0.123/"
// const HTTP_URL = "https://www.y**1.cn/course_p**n_gui"
vue.provide('$HTTP_URL', HTTP_URL)

// 云储存的服务器域名路径
const HTTP_SOURCES_PATH = "http://**j**a0.hn-bkt.cl**ddn.com/"
vue.provide('$HTTP_SOURCES_PATH', HTTP_SOURCES_PATH)


/*
#######################################################################################
########                             第三项                              ##############
#######################################################################################
*/
/* 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + +  
+                       发 起 P O S T 网 络 请 求
+  url : 请求接口地址
+  params ：请求的参数
+  needResultJson ：是否需要返回ResultJson（true返回ResultJson false返回ResultJson.data）
+  loadingBool ：是否需要蒙版
+  loadingText ：蒙版的文字信息
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
*/
const H_T_T_P_POST = (url, params,needResultJson,loadingBool,loadingText)=>{
    return new Promise((resolve, reject) => {
        var loading = ""
        // 判断是否有加载蒙版层
        if(loadingBool){
            loading = ElLoading.service({
                lock: true,
                text: loadingText,
                background: 'rgba(0, 0, 0, 0.7)',
            })
        }
        // 执行请求
        axios({
            method: 'post',
            url: HTTP_URL + url,
            params: params,
        }).then(res => {
            // 关闭蒙版层
            if(loadingBool){
                loading.close()
            }
            // 判断网络返回码是否为200
            if(res.status!=200){
                ElMessage.error("网络请求失败，请重置。")
                return
            }
            //(判断返回需要返回ResultJson)
            if(needResultJson){
                resolve(res.data)   // 返回ResultJson去进行自我判断请求结果
            }else if (res.data.success) {
                resolve(res.data.data)   // 判断后端返回成功后->返回resultjson下的data
            } else {
                ElMessage.warning(res.data.message) //判断后端返回失败->提示错误信息
            }
        }).catch((res) => {
            if(loadingBool){
                loading.close()
            }
            ElMessage.error("网络请求异常或超时-catch")
        });
    })
}
vue.provide('$H_T_T_P_POST', H_T_T_P_POST)

/* 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + +  
+                       发 起 P O S T 网 络 请 求 文 件
+  url : 请求接口地址
+  params ：请求的参数
+  needResultJson ：是否需要返回ResultJson（true返回ResultJson false返回ResultJson.data）
+  loadingBool ：是否需要蒙版
+  loadingText ：蒙版的文字信息
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
*/
const H_T_T_P_FILE = (url, params,needResultJson,loadingBool,loadingText)=> {
    return new Promise((resolve, reject) => {
        var loading = ""
        // 判断是否有加载蒙版层
        if(loadingBool){
            loading = ElLoading.service({
                lock: true,
                text: loadingText,
                background: 'rgba(0, 0, 0, 0.7)',
            })
        }
        axios({
            method: 'post',
            url: HTTP_URL + url,
            data: params,
            headers: { 'Content-Type': 'multipart/form-data' }
        }).then(res => {
            // 关闭蒙版层
            if(loadingBool){
                loading.close()
            }
            // 判断网络返回码是否为200
            if(res.status!=200){
                ElMessage.error("网络请求失败，请重置。")
                return
            }
            //(判断返回需要返回ResultJson)
            if(needResultJson){
                resolve(res.data)   // 返回ResultJson去进行自我判断请求结果
            }else if (res.data.success) {
                resolve(res.data.data)   // 判断后端返回成功后->返回resultjson下的data
            } else {
                ElMessage.warning(res.data.message) //判断后端返回失败->提示错误信息
            }
        }).catch((res) => {
            if(loadingBool){
                loading.close()
            }
            ElMessage.error("网络请求异常或超时-catch")
        });
    })
}
vue.provide('$H_T_T_P_FILE', H_T_T_P_FILE)



/*
#######################################################################################
########                             挂  载                              ##############
#######################################################################################
*/
vue.use(router).use(ElementPlus,{locale})
vue.mount('#app')